# -*- coding: utf-8 -*-

from django.http.response import HttpResponse, HttpResponseRedirect
from django.contrib.auth.models import User
from django.core import serializers
from django.contrib.auth.decorators import login_required
from django.shortcuts import render_to_response
from django.template.context import RequestContext
import datetime
import calendar

from licenca.models import *
import licenca.views

def usuarios(request):
    if request.is_ajax():
        usuarios = User.objects.all()
        
        format = 'json'
        mimetype = 'application/json'

        retorno = serializers.serialize(format, usuarios)
        return HttpResponse(retorno, mimetype)
    else:
        return HttpResponse(None)

class App:
    def __init__(self, nome, url, title = '', icon = 'app.png'):
        self.nome = nome
        self.url = url
        self.title = title
        if self.title == '':
            self.title = self.nome
        self.icon = '/static/img/icon/' + icon
    
    def __unicode__(self):
        return self.nome

@login_required
def home(request):
    licenca_ok = licenca.views.checar_licenca(request)
    if not licenca_ok:
        return HttpResponseRedirect('/licenca/')
    
    hoje = datetime.date.today()
    licencas = Licenca.objects.filter(estado = 1)
    atual = licencas.get(inicio__lte = hoje, fim__gte = hoje)
    
    dias = (atual.fim - hoje).days
    
    mes_que_vem = hoje + datetime.timedelta(dias+1)
    
    proximo = licencas.filter(inicio__lte = mes_que_vem, fim__gte = mes_que_vem + datetime.timedelta(calendar.monthrange(mes_que_vem.year, mes_que_vem.month)[1]-1)).count()
    
    from django.conf import settings
    
    apps = []
    if 'venda' in settings.INSTALLED_APPS:
        if request.user.has_perms((('venda.abrir_caixa'),)):
            apps.append(App(
                'Vendas',
                '/venda/',
                'Ir para o seu caixa',
                'venda.png'
            ))
            
        if request.user.has_perms((('venda.view_caixa'),)) or request.user.has_perms((('venda.view_entrada'),)) or request.user.has_perms((('venda.adicionar_entrada'),)) or request.user.has_perms((('venda.view_saida'),)) or request.user.has_perms((('venda.adicionar_saida'),)):
            apps.append(App(
                'Caixa',
                '/venda/caixa/',
                'Visualização de valores do caixa',
                'pagamento.png'
            ))
        
        if request.user.has_perms((('venda.fazer_devolucao'),)):
            apps.append(App(
                'Devolução',
                '/venda/devolucao/',
                'Realizar a devolução de um produto',
                'devolucao.png'
            ))
    
    if 'financeiro' in settings.INSTALLED_APPS:
            
        if request.user.has_perms((('financeiro.view_pagamento_receber'),)):
            apps.append(App(
                'Compras Parceladas',
                '/financeiro/contas/parcelas/',
                'Imprimir crediário',
                'compras_parceladas.png'
            ))
        
        if request.user.has_perms((('financeiro.view_pagamento_receber'),)):
            apps.append(App(
                'Contas a receber',
                '/financeiro/contas/receber/',
                'Visualizar e pagar contas a receber',
                'contas_receber.png'
            ))
        
        if request.user.has_perms((('financeiro.view_pagamento_receber'),)):
            apps.append(App(
                'Cheques a receber',
                '/financeiro/cheque/receber/',
                'Visualizar cheques pendentes',
                'cheque.png'
            ))
    
    if 'estoque' in settings.INSTALLED_APPS:
        if request.user.has_perms((('estoque.view_produtos'),)):
            apps.append(App(
                'Estoque',
                '/estoque/produto/',
                'Visualizar o estoque',
                'estoque.png'
            ))
    
    if 'cliente' in settings.INSTALLED_APPS:
        if request.user.has_perms((('cliente.change_cliente'),)):
            apps.append(App(
                'Cliente',
                '/admin/cliente/cliente/',
                'Gerenciar clientes',
                'cliente.png'
            ))
    
    if 'fornecedor' in settings.INSTALLED_APPS:
        if request.user.has_perms((('fornecedor.change_fornecedor'),)):
            apps.append(App(
                'Fornecedor',
                '/admin/fornecedor/fornecedor/',
                'Gerenciar fornecedores',
                'fornecedor.png'
            ))
    
    if 'relatorio' in settings.INSTALLED_APPS:
        if request.user.has_perms((('relatorio.view_report'),)):
            apps.append(App(
                'Relatórios por dia',
                '/venda/relatorio/',
                'Visualizar relatórios por dia',
                'relatorio.png'
            ))
            
            apps.append(App(
                'Relatórios por período',
                '/venda/relatorio/periodo/',
                'Visualizar relatórios por período',
                'relatorio.png'
            ))
        
    
    header = "Selecione o módulo"
    css = js = 'home'
    
    mensagem = False
    aviso = False
    if request.session.has_key('mensagem'):
        mensagem = request.session['mensagem']
        del request.session['mensagem']
    if request.session.has_key('aviso'):
        aviso = request.session['aviso']
        del request.session['aviso']
    
    return render_to_response(
        'home.html', locals(),
        context_instance=RequestContext(request)
    )

def sobre(request):
    return render_to_response('sobre.html', locals(),
        context_instance=RequestContext(request))

def ajuda(request):
    return render_to_response('ajuda.html', locals(),
        context_instance=RequestContext(request))

def contatos(request):
    css = "contatos"
    return render_to_response('contatos.html', locals(),
        context_instance=RequestContext(request))